#类的定义，不可运行
class Mycar:
    
    def __init__(self,name="BMW",color="Red",speed=100):     
        #构造方法，创建新对象时的初始化参数，可以设置默认值   
        self.name = name #注意属性和参数不同，这里self.name是类的属性，name是传递给构造方法的参数
        self.color = color
        self.speed = speed
        return

    def show(self):
        #show basic information about this car
        print(f"My name is {self.name}\nMy color is {self.color}")
        return

    def run(self):
        #Car is running with a certain speed
        print(f"I am running, current speed is: {self.speed} KM/H")
        return
    
    def set_name(self,newname):
        #采用专门的方法来改变类的属性值
        self.name=newname

    def __str__(self):
        #print方法
        return f"This car is {self.name} brand and the color is {self.color}, top speed is {self.speed}"
    
    def __add__(self,other):
        #改写运算符+的方法
        return self.speed+other.speed #这里把两辆车的最高速度加起来，仅作示例并没有实际意义。

                

#初始化一个名为car1的实例对象并调用类方法

car1 = Mycar() #采用默认参数创建实例对象
car1.show()
car1.run()
car1.set_name("mini")
car1.show()


#初始化一个名为car2的实例对象并调用类方法

car2 = Mycar("Benz","black",120) #采用自定义参数创建实例对象
car2.show()
car2.run()
print(car2)

a=car1+car2
print(f"The sum of the speed is {a} KM/S")


    
    
    
    
